# -*- coding: iso-8859-1 -*-
# file Exporter.py
# author Rocco Martino
#
############################################################################
#    Copyright (C) 2015 by Rocco Martino                                   #
#    martinorocco@gmail.com                                                #
#                                                                          #
#    This program is free software; you can redistribute it and/or modify  #
#    it under the terms of the GNU Lesser General Public License as        #
#    published by the Free Software Foundation; either version 2.1 of the  #
#    License, or (at your option) any later version.                       #
#                                                                          #
#    This program is distributed in the hope that it will be useful,       #
#    but WITHOUT ANY WARRANTY; without even the implied warranty of        #
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         #
#    GNU Lesser General Public License for more details.                   #
#                                                                          #
#    You should have received a copy of the GNU Lesser General Public      #
#    License along with this program; if not, write to the                 #
#    Free Software Foundation, Inc.,                                       #
#    59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             #
############################################################################

############################################################################
import bpy

from . import Root
############################################################################




############################################################################
# ........................................................................ #
# ........................................................................ #
############################################################################




############################################################################
# ........................................................................ #
class Exporter(object):





############################################################################
    Version = "0.2.0"
    Data = None
############################################################################









############################################################################
    def __init__(self, data):
        self.Data = data
############################################################################




############################################################################
    def export(self):

        self.collectObjects()


        from . import FileWriter


        writer = FileWriter.FileWriter()
        writer.open(self.Data.FilePath)

        writer.writeLine("#Ascii Scene")
        writer.writeLine("#Version 100")
        writer.writeLine("#Generator ooExporter %s" % self.Version)
        writer.writeLine("")


        root = Root.Root( None, self.Data )
        root.Name = bpy.path.basename( bpy.data.filepath )

        root.writeObject(writer)


        writer.close()


        return {"FINISHED"}
############################################################################




############################################################################
    def collectObjects(self):

        uniqueid = self.Data.UniqueID


        for transform in bpy.data.objects:
            self.Data.Objects[transform] = [ False, uniqueid.generate() ]

            for sensor in transform.game.sensors:
                self.Data.Objects[sensor] = [ False, uniqueid.generate() ]

            for controller in transform.game.controllers:
                self.Data.Objects[controller] = [ False, uniqueid.generate() ]

            for actuator in transform.game.actuators:
                self.Data.Objects[actuator] = [ False, uniqueid.generate() ]



        for drawable in bpy.data.meshes:
            self.Data.Objects[drawable] = [ False, uniqueid.generate() ]

        for stateset in bpy.data.materials:
            self.Data.Objects[stateset] = [ False, uniqueid.generate() ]

        for image in bpy.data.images:
            self.Data.Objects[image] = [ False, uniqueid.generate() ]

        for texture in bpy.data.textures:
            self.Data.Objects[texture] = [ False, uniqueid.generate() ]

        for scene in bpy.data.scenes:
            self.Data.Objects[scene] = [ False, uniqueid.generate() ]
############################################################################




# ........................................................................ #
############################################################################
